[WTFutil]CmdRunnerを利用してTCPとUDPの送受信サイズをターミナルに定期表示する

[WTFutil]CmdRunnerを利用してTCPとUDPの送受信サイズをターミナルに定期表示する

Clock Icon2023.01.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • 普段WTFutilというツールを利用して、端末(ターミナル等)内であらゆる情報を集約して可視化できるようにしています。
  • このツールにはCmdRunnerというバッチモジュールがあり、簡単な設定でコマンドやスクリプトの結果の定期表示が可能です。
  • 今回はこちらの記事で作成した「TCPとUDP通信量取得スクリプト」をCmdRunnerに組み込んで定期表示する方法を記録いたします。

結果

  • 本記事で行う手順で以下のように通信量取得スクリプトの結果をターミナルに定期的に表示することが可能です。

環境

  • mac OS Ventura 13.1

手順

インストール

  • ※インストール済みの方はスキップしてください。
  • 以下のコマンドで最新のWTFutilをインストールします。
brew tap wtfutil/wtfutil
brew install wtfutil
  • インストール後、以下のコマンドで起動確認及び設定ファイル確認を行います。
# 起動
# 抜ける時は「q」押下
wtfutil

# 設定ファイル確認
# 起動時に自動で作成されます。
ls ~/.config/wtf

config.yml

対象スクリプトの作成

  • 定期実行する対象のスクリプトを作成します。
  • ~/.config/wtfディレクトリに以下の内容のTCP及びUDP通信量取得shファイルを作成します。(ファイル名 : get-trafic.sh)
    • ※スクリプトの内容はこちらをご確認ください。
#!/bin/sh

nettop -J bytes_in,bytes_out -l 1 |
awk '
$2~/tcp/{
  tcp_in+=$4
  tcp_out+=$6
}
$2~/udp/{
  udp_in+=$4
  udp_out+=$6
}
END{
  print " TCP受信量",tcp_in
  print " TCP送信量",tcp_out
  print " UDP受信量",udp_in
  print " UDP送信量",udp_out
}
'
  • 作成後、以下のように正常に動作するか確認します。
# ファイル確認
ls ~/.config/wtf

config.yml get-trafic.sh

# 実行
sh ~/.config/wtf/get-trafic.sh

 TCP受信量 11xxx
 TCP送信量 11xxx
 UDP受信量 11xxx
 UDP送信量 11xxx

設定ファイルの記述

  • 対象スクリプトが用意できたらWTFutlの設定を行います。
  • WTFutilでは単一のyamlファイルに表示したい情報の設定を記述していきます。
  • そのため~/.config/wtf/config.ymlに以下の内容を記述します。
wtf:
  colors:
    border:
      focusable: darkslateblue
      focused: orange
      normal: gray
  grid:
    columns: [32, 32, 32, 32, 90]
    rows: [10, 10, 10, 4, 4, 90]
  mods:
    tcp_udp:
      cmd: "sh"
      args: ["get-trafic.sh"]
      enabled: true
      type: "cmdrunner"
      title: "TCP and UDP trafic"
      position:
        top: 0
        left: 0
        height: 2
        width: 2
      refreshInterval: 5
  • 上記の内容で今回の表示内容に対応する箇所は「tcp_udp」の部分です。
  • refreshInterval」の部分で実行サイクル時間を設定しています。
    • ※今回の設定では5秒にしています。
  • ※既存の設定に組み込む場合、position設定を任意の値に設定してください。

起動

  • 設定ファイル記述後、再度wtfutilというコマンドをうち以下のような表示になっていることを確認します。

  • config.ymlの「refreshInterval」に設定した周期で実行されて数値が変化していることを確認したら完了です。

まとめ

  • WTFutilはyamlを設定するだけで簡単にターミナルにあらゆる情報を集約することが可能です。
  • よく利用するコマンドやスクリプトを簡単にバッチ設定及び管理できるので非常に便利だと感じました。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.